package com.ovidiojf.fieldplan.equipe;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import com.ovidiojf.fieldplan.atleta.Atleta;
import com.ovidiojf.fieldplan.atleta.AtletaRN;


@ManagedBean(name="equipeAtletaBean")
//@ViewScoped
public class EquipeAtletaBean implements Serializable {

		private static final long serialVersionUID = -4775811745268975052L;
	
		private Atleta atletaSelecionado = new Atleta();
		private Equipe equipeSelecionada = new Equipe();
		
		private List<SelectItem> atletasList;
		private List<SelectItem> equipesList;

		private List<Equipe> listaEquipes;
		
		
//		@PostConstruct
//		public void init() {
//			System.out.println("inicializando");
//			getAtletasList();
//			getEquipesList();
//		}
		
		public EquipeAtletaBean() {
		}
		
		public void inserirAtletaNaEquipe() {
			
			String mensagem;
	
			try {
				equipeSelecionada.getAtletas().add(atletaSelecionado);
				EquipeRN equipeRN = new EquipeRN();
				equipeRN.alterar(equipeSelecionada);
				mensagem = String.format("O atleta %s foi inserido na equipe %s", atletaSelecionado.getNome(), equipeSelecionada.getNome());
			}
			catch(Exception e) {
				mensagem = "Deu erro";
			}
			FacesMessage facesMessage = new FacesMessage(mensagem);
			FacesContext facesContext = FacesContext.getCurrentInstance();
			facesContext.addMessage(null, facesMessage);
			
		}
		
		
		public List<SelectItem> getAtletasList() {

			if(atletasList == null) {
				
				atletasList = new ArrayList<SelectItem>();
				
				AtletaRN atletaRN = new AtletaRN();
				List<Atleta> lista = atletaRN.listar();
				
				if (lista != null && !lista.isEmpty()) {
					
					SelectItem item;
					
					for (Atleta atleta : lista) {
						item = new SelectItem(atleta, atleta.getNome());
						atletasList.add(item);
					}
				}
				
			}
			return atletasList;
		}		
		

		public List<Equipe> getListaEquipes() {
			
			if(listaEquipes == null) {
				EquipeRN equipeRN = new EquipeRN();
				listaEquipes = equipeRN.listar();
			}
			
			return listaEquipes;
		}
			

		public List<SelectItem> getEquipesList() {
		
			if (equipesList == null) {
				
				equipesList = new ArrayList<SelectItem>();

				EquipeRN equipeRN = new EquipeRN();
				List<Equipe> lista = equipeRN.listar();
				
				SelectItem item;
				
				for (Equipe equipe : lista) {
					item = new SelectItem(equipe, equipe.getNome());
					equipesList.add(item);
				}
			}
			
			return equipesList;
		}

		public Atleta getAtletaSelecionado() {
			return atletaSelecionado;
		}
		public void setAtletaSelecionado(Atleta atletaSelecionado) {
			this.atletaSelecionado = atletaSelecionado;
		}

		public Equipe getEquipeSelecionada() {
			return equipeSelecionada;
		}
		public void setEquipeSelecionada(Equipe equipeSelecionada) {
			this.equipeSelecionada = equipeSelecionada;
		}

}
